home *** CD-ROM | disk | FTP | other *** search
/ The Business Master (4th Edition) / The Business Master - 4th Edition.iso / files / utilstem / diskqwik / diskqwik.doc < prev    next >
Encoding:
Text File  |  1993-08-20  |  40.1 KB  |  816 lines

  1. DiskQwik v1.1  Shareware version Released August 20th, 1993
  2. DiskQwik v1.2 Registered version Released August 20th, 1993
  3.  
  4. ╒═════╡  DiskQwik v1.1  │
  5. │                               ┌────────────────┐    ┌────────────────┐
  6. │   Dustbowl Designs, Inc.      │      2 SPB     │    │░░░░0  SPB░░░░░░│
  7. │   -=≡ NOT REGISTERED ≡=-      │ ≡■≡≡≡≡≡≡≡≡≡≡≡≡ │    │░░░░░░░░░░░░░░░░│
  8. │ "Dedicated to enhancing the   └────────────────┘    └────────────────┘
  9. │ world's personal computers."        Drive 0         DiskQwik v1.2 only
  10. │    (405) 741-2721 BBS
  11. ├───────────────────────────────────────────────────────────────────────────┐
  12. │     Copyright 1993 by Dustbowl Designs, Inc. All rights reserved.         │
  13. │         12600 S.E. 38th Street, Choctaw, Oklahoma USA 73020-6107          │
  14. │   See DiskQwik.doc for v1.2 registration information. (405) 741-4705      │
  15. └───────────────────────────────────────────────────────────────────────────┘
  16.  
  17. The block device driver for AT/IDE interface hard disk drives that
  18. enables MULTIPLE SECTOR Block Transfer Mode.
  19.  
  20. ┌────────────────────────────────────────────────────────────────────┐
  21. │▒▒▒ What's New: v1.1 ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
  22. └────────────────────────────────────────────────────────────────────┘
  23. Initial public release of DiskQwik v1.1 Shareware.
  24.  
  25. ┌────────────────────────────────────────────────────────────────────┐
  26. │▒▒▒ Introduction ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
  27. └────────────────────────────────────────────────────────────────────┘
  28. DiskQwik is a block device driver that is designed exclusively for
  29. AT/IDE Hard Disk Drives. Many newer IDE drives have the built in
  30. capability to significantly increase their Data Transfer Rates by
  31. activating the MULTIPLE SECTOR Block Transfer Mode. In a typical
  32. scenario, the transfer rate can be increased by up to 45% over the
  33. rate offered by the motherboard bios. Some of the newest motherboards
  34. and high-end Host Adapters are beginning to offer this MULTIPLE Mode,
  35. but this great feature of our new IDE drives has essentially remained
  36. untapped.... until now, thanks to DiskQwik!
  37.  
  38. Included in this ZIP file is DISKQWIK.PCX, in a standard graphics file
  39. format used by most paint programs and picture viewers, that shows an
  40. example of one drive's performance results. It shows in clear detail
  41. the remarkable increase in Data Transfer Rate that one can expect from
  42. an IDE drive that has activated MULTIPLE SECTOR Block Transfers. With
  43. the Sectors per Block (SPB) set to 2, we immediately see an increase
  44. of 15% over the system motherboard bios int13 routines. This is the
  45. capability of DiskQwik's Shareware release. With the SPB set to 32
  46. (only Registered versions of DiskQwik can set values greater than 2),
  47. the Data Transfer Rate of our test drive jumps to 43% higher than the
  48. native system motherboard bios int13 routines.
  49.  
  50. This shareware release of DiskQwik is designed to give you the
  51. opportunity to test for yourself if your IDE drive can be motivated
  52. into MULTIPLE SECTOR Block Transfer Mode. It is VERY important to note
  53. here that while a large percentage of IDE drives can use this mode,
  54. some cannot (some say they can, but actually don't... more on this
  55. later), therefore, shareware provides a perfect opportunity for "try
  56. before you buy" software evaluation.
  57.  
  58. ┌────────────────────────────────────────────────────────────────────┐
  59. │▒▒▒ Upgrade Offer ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
  60. └────────────────────────────────────────────────────────────────────┘
  61.  
  62. As noted in the screen representation and at the beginning of this
  63. document, DiskQwik v1.1 is shareware and supports a SINGLE hard disk
  64. drive (unit 0) in the MULTIPLE SECTOR Block Transfer Mode.
  65. Additionally, The shareware version is "hard coded" to a 2 Sectors per
  66. Block maximum in the READ Multiple mode.
  67.  
  68. In the event that you want to activate the higher Data Transfer Rates
  69. gained by increasing the Sectors per Block value, add a SECOND drive
  70. in the MULTIPLE SECTOR Block Transfer Mode or desire to have WRITE
  71. Multiple, we offer the program: Registered DiskQwik v1.2 .
  72.  
  73. Registered version benefits and features:
  74.   * Custom control of the values used for setting Sector per Block
  75.     (SPB).
  76.   * WRITE Multiple companion to the READ Multiple routine.
  77.   * Ultra-fast program loading without delays or required user
  78.     intervention. (If you're getting tired of the random character
  79.     starter and prolonged registration reminder, then it is probably
  80.     time to register <grin>.)
  81.   * Postscript version of the documentation.
  82.   * Advanced technical support and continuous upgradability to all
  83.     future registered versions via our BBS.
  84.  
  85.  
  86. ┌────────────────────────────────────────────────────────────────────┐
  87. │▒▒▒ System Requirements ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
  88. └────────────────────────────────────────────────────────────────────┘
  89.  
  90. A few simple conditions must be met in order to utilize the DiskQwik
  91. device driver.
  92.  
  93. They are:
  94.  
  95.    1. Computer system MUST be either a 286, 386sx, 386dx, 486sx or
  96.       486dx (and Pentium, probably...).
  97.    2. The hard disk drive must be of the AT/IDE interface type.
  98.  
  99.  
  100. ┌────────────────────────────────────────────────────────────────────┐
  101. │▒▒▒ Preparing the Disk Drives ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
  102. └────────────────────────────────────────────────────────────────────┘
  103. No special preparation or formatting of the hard disk drives is
  104. required.
  105.  
  106. If the two minimum hardware requirements are met, then proceed through
  107. the following tests to determine if the drive's microcode is up to the
  108. job:
  109.  
  110.    1. Run 4DRVUTIL.EXE (included in this zip file) on the Primary port
  111.       address, unit 0.
  112.  
  113.    2. Does 4DRVUTIL show that Multiple Sectors per Interrupt are
  114.       available?
  115.       NO: Stop. The DiskQwik utility exists to activate this option.
  116.       YES: Go to 3.
  117.  
  118.    3. Does 4DRVUTIL show that the drive's buffer size is larger than
  119.       the Maximum number of Multiple Sectors per Interrupt?
  120.       NO: Stop ...maybe.  If they are the same size, then the chances
  121.           are that the drive's microcode is giving a false positive on
  122.           Multiple Sectors. Given that the drive has a finite "memory
  123.           pool" available to support both the Read/Write caching and
  124.           the drive memory requirement for the Multiple sectors, it
  125.           makes no sense that these two should be the same. If the
  126.           entire buffer were given to the task of Multiple Sector
  127.           support, the drive's performance will degrade to an all time
  128.           low! Nonetheless, you still might continue on as long as you
  129.           configure DiskQwik to a block size that is half the size, at
  130.           most, of the buffer. This happens automatically with the
  131.           shareware release, since it is hard coded to 2 Sectors Per
  132.           Block (SPB).
  133.      YES: Things are looking good. Go to 4.
  134.  
  135.    4. Run 4_SPEED.EXE (included in this zip file) on drive C: and save
  136.       the test results to a Log file for comparison later and be sure
  137.       to attach an appropriate comment to the test.  (Note: 4_SPEED
  138.       will quickly be picked up by drive caching software like
  139.       SmartDrive etc. Therefore, if you are seeing a Data Transfer
  140.       Rate for the drive that is higher than 3 or 4 MBytes per second,
  141.       then you will need to REM out the drive cache software in order
  142.       to collect data on the drive's true unassisted transfer rate.)
  143.  
  144.    5. Add to your config.sys file the line DEVICE=DQWIK110.HDD, save
  145.       and reboot your computer.
  146.  
  147.    6. Did DiskQwik load OK without error?
  148.       NO: Stop.  One of the few error messages is simply "Error
  149.           setting Multiple Mode, DiskQwik NOT LOADED".  This means
  150.           that the drive's microcode is configured to reject attempts
  151.           to set the Multiple feature.  This is too bad and
  152.           unfortunately the end of the line.  It is important to note
  153.           that this DOES NOT mean that the drive is defective, poorly
  154.           designed, or any such implication that the drive
  155.           manufacturer has failed in any way. It merely means that the
  156.           feature was never available in the first place.  The
  157.           development of Multiple Sector per Interrupt features in
  158.           various drives amongst the drive manufacturers is still
  159.           maturing.
  160.      YES: Almost home. Go to 7.
  161.  
  162.    7. Run 4_SPEED again on drive C: and save the test results to the
  163.       same Log file that was prepared during the first test run.
  164.  
  165.    8. Using 4_SPEED, select the "Analyze" feature, and graph the two
  166.       test runs.  This is the moment of truth.
  167.  
  168.    9. Does the graph show that there has been an increase in the
  169.       drive's Data Transfer Rate?
  170.       NO: Stop.  Oh well... @#$%!!. So close, and yet we've hit a
  171.           stopping point. At least you have the satisfaction of
  172.           knowing that through shareware, you are able to "try before
  173.           your buy," and that you have in your possession two very
  174.           fine and no-obligation-to-register Freeware utilities
  175.           (4DRVUTIL and 4_SPEED) as consolation prizes.  Thanks for
  176.           trying.  In a more serious vein, again it is very important
  177.           to recognize the points made in step number 6. In general,
  178.           the drives that seem to have the multiple capability are
  179.           usually larger than 150 MBytes and have drive buffers at
  180.           least 32 KBytes in size.
  181.      YES: How a_bout that! If everything has gone according to plan,
  182.           you should be looking at an increase in the Data Transfer
  183.           Rate of around 15%; with ONLY 2 Sectors Per Block. You can
  184.           expect to see a substantial increase in the DTR by
  185.           increasing the SPB value, which is the prime feature of the
  186.           Registered version of DiskQwik (as well as setting up unit 1
  187.           and activating WRITE MULTIPLE). Go to 10.
  188.  
  189.   10. Next, read to the section below titled "App Notes" and pick out
  190.       the points that apply to your system setup. Please consider
  191.       registering this fine shareware product, upload the shareware
  192.       zip file to as many BBS as you can afford, and tell you friends!
  193.       Congratulations.
  194.  
  195.  
  196. ┌────────────────────────────────────────────────────────────────────┐
  197. │▒▒▒ Command Line Switches ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
  198. └────────────────────────────────────────────────────────────────────┘
  199. No command line switches are needed in the Shareware version of
  200. DiskQwik since it is hard coded to Unit 0, READ MULTIPLE and 2 Sectors
  201. Per Block (SPB).
  202.  
  203. The Registered version switches can be set up in the CONFIG.SYS file
  204. after the complete driver name and should be separated by spaces for
  205. clarity.
  206.  
  207. The following command line switch have been put into place for the
  208. Registered version:
  209.  
  210. No Command Line Switches - Driver will NOT load since it requires the
  211.                            command line switches for instruction.
  212.  
  213. B(?)xx - Block Size of xx for Unit ?. Where (?) is replaced by either
  214.          0 or 1 and xx is replaced by a value (typically an even
  215.          number) indicating the number of Sectors Per Block (SPB).
  216.          The SPB value cannot exceed the maximum number of sectors per
  217.          interrupt defined in the drive's own microcode.
  218.  
  219. RM(?) - Activate READ MULTIPLE for unit ?= 0 or 1.
  220.  
  221. WM(?) - Activate WRITE MULTIPLE for unit ?= 0 or 1.
  222.  
  223. P - Pause the progress of the config.sys after loading DiskQwik.  Press
  224.     C to continue.  This is handy when confirming the status of the
  225.     driver.
  226.  
  227. Example: DISKQWIK B016 RM0 WM0 B132 RM1 P
  228.          means: block size of 16 for unit 0 with READ and WRITE
  229.                 MULTIPLE, block size of 32 for unit 1 with READ
  230.                 MULTIPLE only, with a "Press C to Continue" pause
  231.                 after loading.
  232.  
  233. CONFIRMATION of Device options:
  234. Visual confirmation of the I/O option combinations will be indicated
  235. by the COLOR of the "led" indicator on the DiskQwik banner screen drive
  236. icon....
  237.  
  238.       ┌────────────────┐
  239.       │     32 SPB     │
  240.       │ ≡*≡≡≡≡≡≡≡≡≡≡≡≡ │
  241.       └──^─────────────┘
  242.          |
  243.          |
  244. RM(?)  - will be denoted by a BLUE * (led) indicator for the drive
  245.          selected. (This is the default color you should see with the
  246.          shareware version of DiskQwik.)
  247.  
  248. WM(?)  - will be denoted by a YELLOW * (led) indicator for the drive
  249.          selected.
  250.  
  251. RM(?) & WM(?) - will be denoted by a RED * (led) indicator for the
  252.          drive selected.
  253.  
  254. P      - The "Press c to continue", message will be displayed in the
  255.          bottom left corner of the yellow text box and the 'c' key
  256.          must be pressed before the driver's init code is terminated.
  257.  
  258. ┌────────────────────────────────────────────────────────────────────┐
  259. │▒▒▒ Background ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
  260. └────────────────────────────────────────────────────────────────────┘
  261.  
  262. MULTIPLE SECTOR Block Transfer Mode has its origins in the ESDI hard
  263. disk drive interface.  Just prior to the development of the AT/IDE
  264. interface, the ESDI controllers were about ready to institute this
  265. very interesting ability.  Similar to the IDE inquiry command, ESDI
  266. drives will report 512 bytes of information about themselves where
  267. word 47 is a yes/no variable about Multiple Sector capability.  If the
  268. byte is "yes" then the following bytes will tell how many maximum
  269. sectors per interrupt may be used.  In fact, 4DRVUTIL, and other IDE
  270. inquiry utilities, will easily receive this information from the ESDI
  271. drive controllers.
  272.  
  273. The rapid pace of hard drive technology, however, has since made the
  274. ESDI interface obsolete.  This is lamentable from the standpoint that
  275. the interface has a sterling reputation for quality and the drives for
  276. ruggedness.  ESDI drives were typically large capacity units (of the
  277. time) that found homes in file servers and other environments that
  278. demanded critical performance from their drives.  Most network
  279. managers will speak highly of the interface.
  280.  
  281. Drive manufacturers soon found that the cost per megabyte could be
  282. drastically reduced by building the controllers directly onto the
  283. drive.  This concept holds true for the AT/IDE interface (as well as
  284. SCSI, but that's a whole different ball game).  This integrated
  285. controller also allowed the drive manufacturers to use Zone Bit
  286. Recording methods (variable sectors per track) and drive geometry
  287. translation schemes to exceed the DOS limitation of 1024 cylinders
  288. max.  By building RAM buffers into the drives we finally begin to
  289. reach the point in hard drive technology where MULTIPLE SECTOR Block
  290. Transfer Mode begins to be a reality.
  291.  
  292. A discussion about the microcode which manages the drive RAM buffer is
  293. worthwhile.  Just like the RAM memory in our systems, the RAM buffers
  294. on an AT/IDE drive should be thought of as a "memory pool". Today's
  295. modern drives have buffers that range from simple to sophisticated. The
  296. simplest buffer schemes employ basic Read Look Ahead techniques that
  297. operate on the assumption that the next data you will request will be
  298. contiguously after the data you just got.
  299.  
  300. These Look Ahead buffers generally are FIFO types (first in, first
  301. out) that either read a pre defined number of sectors, or read through
  302. to the end of the physical cylinder.  It is easy to imagine that the
  303. transfer rate and speed of the data delivery to the host system is
  304. greatly increased when it is dumped from RAM to RAM (nanoseconds)
  305. instead of physically picking it up off of the drive (milliseconds).
  306.  
  307. The early AT/IDE drives had buffers of only 2 to 8 KiloBytes.  In
  308. terms of sectors, that is 4 to 16 (2 512 byte sectors equal 1
  309. KiloByte). This is enough to Read Ahead the rest of a track of a 17
  310. sector per track drive (typical of the day).  Reading Ahead to the end
  311. of the cylinder requires a much larger amount of memory.  Also, basic
  312. competition amongst the drive manufacturers to be faster "than the
  313. other guy" has caused the buffer sizes to increase.  Other factors
  314. like spindle speeds, recording densities, and access times combine
  315. together to be part of the overall improvements that have increased
  316. drive performance.
  317.  
  318. When the RAM buffer reaches a certain point in size, either the Read
  319. Look Ahead must cross a physical cylinder boundary or something else
  320. more desirable; this moves us into Segmented Buffers.  From here we
  321. see Adaptive Segmented Buffers, and so on.  A typical modern drive may
  322. describe its buffer as Read Look Ahead Multi-Segmented Adaptive,
  323. combining all types.
  324.  
  325. Write caching is the current newcomer to drive buffer techniques.
  326. These are interesting in that the drive reports that a write has
  327. completed as soon as the data arrives in the buffer, thereby freeing
  328. up the interrupt hold on the CPU, allowing it to move on to more
  329. processing. Then the drive, under its own control, attends to laying
  330. down the data on the spinning magnetic media.  This happens very
  331. quickly and does not carry with it the same negative implications that
  332. some report about write caching software.
  333.  
  334. The balance between RAM allotted to write cache and read cache is
  335. usually preset to around 40/60 and may someday actually dynamically
  336. adjust to true system usage.  You can begin to see that these models
  337. employ sophisticated microcode and algorithms working with a memory
  338. pool which is subdivided into various areas.  The size of this total
  339. buffer memory is climbing continuously, with state-of-the-art models
  340. offering 1 megabyte of RAM. (Why do I get the feeling that this will
  341. be old news in a few months.... <grin>?)
  342.  
  343. So, what about MULTIPLE SECTOR Block Transfer?  Simple, really...
  344. whatever Block Size is set, is deducted from the memory pool.  For
  345. example, if a 32 sector block is set, then 16 KiloBytes of RAM are
  346. removed from the Read/Write caching on the drive.  While this sounds
  347. like a setback, an actual increase in the Data Transfer Rate results
  348. from the way this can interact with DOS.
  349.  
  350. ┌────────────────────────────────────────────────────────────────────┐
  351. │▒▒▒ Outline ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
  352. └────────────────────────────────────────────────────────────────────┘
  353.  
  354. Fortunately for all of us, the convenience of personal computers is
  355. due, in large part, to the simplification of the User Interface.  We
  356. have the advantage today, over the early pioneers, of being able to
  357. simply sit down and create within our applications.  We "suspect" that
  358. low level hardware operations are taking place as we work, because the
  359. equipment tends to respond to our commands.   We see the hard drive
  360. activity light flicker when we open and close our files.  This is as
  361. it should be for the popular acceptance of personal computers in our
  362. society.  User Interfaces have become friendlier each day, and will
  363. continue to do so.  We can all look forward to the near future when
  364. systems interact with more than just our fingers.
  365.  
  366. In some respects, interface is synonymous with translator.  As we work
  367. within our high level applications, layers of translations are taking
  368. place to convert our commands into machine language.  We enjoy the
  369. benefit of not needing to know how these clever manipulations are done
  370. and can count ourselves lucky in the process.  A typical read
  371. translation sequence might be as follows:
  372.  
  373. 1.  Application Command Open File
  374.  
  375.      This level has its own layers of simplification, but roughly
  376.      boils down to the fact that as a programmer's source code is
  377.      prepared for use, a compiler translates the file handling
  378.      components into the standard DOS level software interrupts,
  379.      notably Interrupt 21.
  380.  
  381. source code:   assign DataFile the name mydata.dat
  382.                open (DataFile)
  383.                read (DataFile, DataWeNeed)  : Int 21, Fn 3Fh
  384.                                               so many sectors...
  385.                close (DataFile)
  386.                use (DataWeNeed)
  387.  
  388.      These DOS interrupts provide even the programmer with the ability
  389.      of being able to avoid low level interaction with the system and
  390.      allows an application to operate on many types of machines.  Once
  391.      an application issues a DOS file command, the programmer can
  392.      count on a trustworthy sequence of events and can just let it
  393.      happen while waiting for a confirmation of success from the
  394.      operating system. (Some say that a REAL programmer always begins
  395.      with COPY CON PROGRAM.EXE <groan>.)
  396.  
  397. 2.  DOS File Allocation Table (FAT)
  398.  
  399.      The resident portion of our operating system, that part which
  400.      always stays in memory, is triggered into action by the DOS read
  401.      file interrupt.  The first order of business is to determine if
  402.      the file already exists, and if it does... where?  The DOS file
  403.      directories are used to make this determination and give the
  404.      operating system a starting point.  DOS uses a method of ordering
  405.      our data into clusters, or groups of sectors, that begins with
  406.      zero and numbers on up to the end of a drive's partition. This
  407.      might be thought of as a kind of linear, two dimensional map and
  408.      is sometimes call logical block address.
  409.  
  410.      Since most files are larger than a single cluster, the location
  411.      of the next cluster after the start is required.  This location
  412.      of the next portion of the file is determined by inspecting the
  413.      File Allocation Table.  This table tells DOS the logical
  414.      whereabouts of the next data; which does not necessarily
  415.      contiguously follow the location of the last data. With DOS
  416.      reading the data into memory as it goes along, these steps are
  417.      repeated until the end of the file is reached.  The link from
  418.      location to location create a virtual chain of connections that
  419.      insure that data is not lost.
  420.  
  421. 3.  DOS Kernel Resident Block Device Driver
  422.  
  423.      To this point the data is logically ordered in the two
  424.      dimensional manner described above. Yet, we need to translate
  425.      this into a specifically located sector on the drive, itself.
  426.      Disk drives order their data by Cylinders, Heads and Sectors
  427.      which is a kind of spacial three dimensional coordinate.  The
  428.      transition from the logical linear location to the physical
  429.      spacial location is the job of DOS's own Resident Block Device
  430.      Driver (Block a.k.a Disk).  This requires a straight forward
  431.      calculation whose result depends on the individual geometry of
  432.      the drive being accessed; this geometry is stored in the Boot
  433.      Records and things called Bios Parameter Blocks and is read into
  434.      memory when the operating system loads.
  435.  
  436.      If an imaginary drive had 10 sectors per track, 10 heads, and 10
  437.      cylinders, the drive would have a total of 1000 sectors. If we
  438.      were to count up through the sectors, the Heads digit (10's)
  439.      would increment after the ninth sector and the Cylinders digit
  440.      (100's) would increment after the ninth head.  With this model,
  441.      it is easy to see the relationship between the logical and
  442.      physical locations.  For example, the 123rd logical sector might
  443.      physically be located at Cyl=1, Hd=2 and Sect=3.  Aside from the
  444.      fact that DOS doesn't recognize a zero in the sectors digit, this
  445.      is the oversimplified way things are.  Disk drives, however, come
  446.      in many different capacities and make calculating a physical
  447.      location more interesting.  A drive with 17 Sectors per track, 6
  448.      Heads and 820 Cylinders would find the 123rd sector at Cyl=1,
  449.      Hd=1 and Sect=3 (right?).
  450.  
  451. 4.  Interrupt 13 Call
  452.  
  453.      Fun and games aside, the DOS Block Device Driver then builds a
  454.      hardware interrupt command that says something like "unit 0, at
  455.      cylinder 1, head 1, sector 4... read it."  Things start to look
  456.      just like assembly language programming at this point:
  457.  
  458.      mov ah, 02h   ; read function
  459.      mov al, 1     ; number of sectors
  460.      mov ch, 1     ; cylinder number
  461.      mov cl, 4     ; sector number
  462.      mov dh, 1     ; head number
  463.      mov dl, 0     ; unit number
  464.      int 13        ; disk interrupt
  465.  
  466.      Believe it or not, the fact is we still are looking at a language
  467.      designed to provide a user friendly interface, really.  Many
  468.      programmers actually write their programs at this level because
  469.      the finished and compiled  code ends up being smaller and faster
  470.      than the code produced by higher level programming languages like
  471.      Basic, Pascal and C.
  472.  
  473. 5.  AT BIOS Port Address Command
  474.  
  475.      Interrupt 13 Function 02h is a program, too, in a way. Its
  476.      routines are provided on a chip we all have someplace in our
  477.      system, called a BIOS (Basic Input Output Services).  When we
  478.      power on the computer the contents of the BIOS are stored in
  479.      memory and everything we do flows through these routines.  All
  480.      the hardware components of the computer - video, disk, keyboard,
  481.      etc. - have complicated little routines which handle
  482.      communicating with the hardware device.
  483.  
  484.      Repetition is the name of the game at this level.  In the case of
  485.      our read a file example, every involved sector is seeked to
  486.      (sought?), read from and checked out for success, individually.
  487.      What is simplified for convenience as Int 13 Fn 02h ends up being
  488.      a near endless stream of machine language Port Address commands.
  489.      Hard disk drives have a specific port address at 1F0h for the
  490.      Primary port address and 170h for the Secondary port address.
  491.      While Int 13 serves both hard and floppy disk drives, the port
  492.      addresses for these two different types of drives are split apart
  493.      and managed by separate BIOS routines.
  494.  
  495. 6.  Enter DiskQwik
  496.  
  497.      We've finally reached the level where it is time to consider how
  498.      DiskQwik figures into the scheme of things.  First, it is
  499.      important to look at the challenge faced by the BIOS programmer.
  500.      The hard disk drive to be used in the computer system will be one
  501.      of many hundreds of types across several interfaces that range
  502.      from old to new, all needing to be supported by the one BIOS
  503.      routine.  Given this obligation, the routines that are written
  504.      are understandably generic with the same code that runs our older
  505.      MFM drive also running our new AT/IDE drive.  The need for
  506.      general compatibility creates a situation where the special
  507.      enhancements of the modern AT/IDE disk drive are left
  508.      unsupported.
  509.  
  510.      The phrase "Multiple Sectors Per Interrupt" correctly implies the
  511.      notion that normally we have only one sector per interrupt. This
  512.      is the case with the standard BIOS service and is the default
  513.      start up configuration of the drive.  The following diagram shows
  514.      that a large amount of time is spent in overhead checking the
  515.      interrupt after every sector read from the port:
  516.  
  517.      Interrupt Confirmation (overhead)
  518.      │
  519.     ┌i┐   ┌i┐   ┌i┐   ┌i┐   ┌i┐   ┌i┐   ┌i┐   ┌i┐   ┌i┐   ┌i┐   ┌i┐
  520.  s──┘ └s──┘ └s──┘ └s──┘ └s──┘ └s──┘ └s──┘ └s──┘ └s──┘ └s──┘ └s──┘ └s─
  521.  │
  522.  Sector Read
  523.  
  524.  
  525.      With Multiple Sector Block Transfer Mode enabled on the drive,
  526.      block size equals to 8, a flow of data like this results:
  527.  
  528.                                  Interrupt Confirmation (overhead)
  529.                                  │
  530.                                 ┌i┐                               ┌i┐
  531.  s───s───s───s───s───s───s───s──┘ └s───s───s───s───s───s───s───s──┘ └
  532.  │
  533.  Sector Read
  534.  
  535.      A new routine is required to pass this type of data flow back to
  536.      DOS; software of this type is called an Interrupt Service Routine
  537.      (ISR). DiskQwik is an ISR replacement for the native BIOS Int 13
  538.      read and/or write hard disk drive service routines.  DiskQwik
  539.      resides in memory, monitoring all Int 13 requests.  When a Read
  540.      and/or Write request comes along, it intercepts the command and
  541.      manages it directly, "hand carrying" it through to the
  542.      port addresses, and the drive.
  543.  
  544.      The turn around time on the delivery of the data is significantly
  545.      improved because much of the overhead from the interrupt
  546.      confirmations has been eliminated. This causes the Data Transfer
  547.      Rate to increase significantly.  DiskQwik is loaded as a device
  548.      driver through the Configure System CONFIG.SYS file.  Since
  549.      DiskQwik operates at such a low level, it remains compatible with
  550.      virtually all applications.  A few noteworthy exceptions do exist
  551.      and are noted in the App Notes section, below.
  552.  
  553. ┌────────────────────────────────────────────────────────────────────┐
  554. │▒▒▒ App Notes ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
  555. └────────────────────────────────────────────────────────────────────┘
  556.  
  557. Some Application Notes:
  558.  
  559.  1.  We've seen a few programs which provide an interesting "public
  560.      safety" feature, namely that they block attempts to  write to
  561.      track 0 (i.e. cylinder 0, head 0).  The purpose is to provide a
  562.      layer of defense against boot sector viruses. Since this is such
  563.      a good idea, we decided to join in and provide the same
  564.      protection.  After all, our device driver is custom tailored to
  565.      reading and writing to the hard disk drive and this capability
  566.      only added a byte or two of additional code. DiskQwik provides
  567.      this general safety precaution because no legitimate applications
  568.      have any business, whatsoever, writing changes to sectors on this
  569.      track without your knowledge.
  570.  
  571.      Reading data on track 0 is allowed, however writing to track 0
  572.      will produce a write protect error.  If you need to modify data
  573.      on these "hidden" sectors, then you will need to REM out the
  574.      device=dqwik110.hdd statement in the config.sys, and reboot.
  575.  
  576.  2.  Drive compression software programs like DoubleSpace work
  577.      perfectly well with DiskQwik.
  578.  
  579.  
  580.  3.  Concerning drive caching software: SmartDrive works because it
  581.      creates phantom block devices for each of the drives being cached
  582.      and operates in the DOS interrupt arena.  HyperDisk doesn't work,
  583.      which is a shame since it is one of the finest shareware programs
  584.      available on the market today, because it is a true Int13 level
  585.      software cache. We are hoping to see this resolved soon, and look
  586.      forward to new versions of HyperDisk to start supporting the
  587.      multiple sector block transfer modes.
  588.  
  589.  4.  Concerning Windows Swap Files: A Temporary swap file works
  590.      because the file is like any other typical file with FAT updates.
  591.      A Permanent swap file doesn't work because it is unlike any other
  592.      typical file.  Basically, a permanent swap file locks itself into
  593.      an area on the drive and never moves, and since it never moves,
  594.      DOS and FAT updates are no longer required. A permanent swap file
  595.      is read and written directly with Int13 and cannot handle
  596.      multiple sector block transfer mode.  Windows should refuse to
  597.      load if it sees an Int13 interrupt service routine like DiskQwik.
  598.  
  599.      We'd like to point out that the net gain in data transfer rate,
  600.      while in Windows, from using multiple sector block transfer mode
  601.      access to a temporary swap file far exceeds the gain of using
  602.      native Int13 access to a permanent swap file.
  603.  
  604.  5.  DOS version levels and OEM versions of DOS work because they all
  605.      follow the same standards accessing Int13.
  606.  
  607.  6.  When determining the value for Sectors Per Block (SPB) in the
  608.      registered version, it is worth noting that the rate of change in
  609.      the Data Transfer Rate tends to level out around 32 sector per
  610.      block. Even if your drive says it can handle a higher amount,
  611.      you'll probably find the increase is fairly small and not really
  612.      worth it considering the RAM requirement is removed from the
  613.      drive's buffer memory pool (i.e. read/write caching on the
  614.      drive).
  615.  
  616.  7.  The Sector Per Block value can be odd or even values, however
  617.      setting values to  2, 4, 8, 16, or 32 seem to make better sense
  618.      as they are more adapted to the math routines involved.
  619.  
  620.  8.  File defragmentation and optimization utilities will generally
  621.      work well with DiskQwik, however it is a good practice to
  622.      simplify one's system before running this type of utility by
  623.      disabling programs like drive caching software and DiskQwik.
  624.      Always make sure you have a current backup before optimizing a
  625.      hard disk drive.
  626.  
  627. ┌────────────────────────────────────────────────────────────────────┐
  628. │▒▒▒ Error Messages ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
  629. └────────────────────────────────────────────────────────────────────┘
  630.  
  631. The device driver may display a single of error message during the
  632. loading process of the CONFIG.SYS file.  It is "Error Loading
  633. DiskQwik" and results from the drive returning an aborted command when
  634. the set multiple command is issued.
  635.  
  636. ┌────────────────────────────────────────────────────────────────────┐
  637. │▒▒▒ Legal Disclaimer ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
  638. └────────────────────────────────────────────────────────────────────┘
  639.  
  640.                           LICENSE AGREEMENT
  641.  
  642. DiskQwik, 4_Drive Utilities, 4_Speed All versions.
  643.  
  644. Dustbowl Designs, Inc. provides  the accompanying object code software
  645. ("Software")  and nonexclusively  licenses  its  use on  the following
  646. terms and conditions. The Software is copyrighted by Dustbowl Designs,
  647. Inc. with all rights reserved.  YOU ASSUME FULL RESPONSIBILITY FOR THE
  648. SELECTION OF THE  SOFTWARE TO ACHIEVE YOUR INTENDED  PURPOSES, FOR THE
  649. PROPER INSTALLATION  AND USE. Dustbowl Designs,  Inc. DOES NOT WARRANT
  650. THAT THE  SOFTWARE WILL MEET  YOUR REQUIREMENTS, THAT  THE SOFTWARE IS
  651. FIT FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL BE
  652. ERROR FREE. Dustbowl Designs, Inc. EXPRESSLY DISCLAIMS ALL WARRANTIES,
  653. WHETHER  ORAL  OR  WRITTEN,  EXPRESSED  OR  IMPLIED, INCLUDING WITHOUT
  654. LIMITATION WARRANTIES  OF MERCHANTABILITY OR FITNESS  FOR A PARTICULAR
  655. PURPOSE. IN  NO EVENT WILL  Dustbowl Designs, Inc.  BE LIABLE TO  YOU,
  656. YOUR  CUSTOMERS   OR  OTHER  USERS   FOR  ANY  INDIRECT,   INCIDENTAL,
  657. CONSEQUENTIAL,  SPECIAL  OR  EXEMPLARY  DAMAGES  ARISING  OUT OF OR IN
  658. CONNECTION WITH THE USE OR INABILITY TO USE THE SOFTWARE.
  659.  
  660. DiskQwik is a trademark of Dustbowl  Designs, Inc. The DiskQwik
  661. software and documentation are Copyright 1993 by Dustbowl Designs with
  662. all rights reserved. The Registered DiskQwik v1.2 software programs
  663. ARE NOT shareware or freeware and unauthorized redistribution is
  664. STRICTLY PROHIBITED.
  665.  
  666. End of License agreement.
  667.  
  668. *****************************************************************
  669.  
  670. ┌────────────────────────────────────────────────────────────────────┐
  671. │▒▒▒ Revision History ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
  672. └────────────────────────────────────────────────────────────────────┘
  673.  
  674. v1.1    08/93 - public release of DiskQwik SHAREWARE v1.1.
  675. v1.2    08/93 - public release of DiskQwik REGISTERED v1.2.
  676.  
  677. Contents of the DiskQwik Distribution Set. DQWIK110.ZIP (DQWIK.ZIP on
  678. CompuServe (tm) go IBMHW forum Lib 1)
  679.  
  680. DQWIK110.HDD    Device driver file. Compiled 08-20-93 01:10:00.
  681. DISKQWIK.DOC    Documentation file with installation instructions.
  682. 4DRVUTIL.EXE    An AT/IDE Identify Drive inquiry utility that shows
  683.                 which 3_Drive/4_Drive and DiskQwik command line
  684.                 switches work best. Designed to work on both Primary
  685.                 and Secondary Port Addresses. Freeware.
  686. 4DRVUTIL.DOC    Auxiliary documentation.
  687. 4_SPEED.EXE     Our Data Transfer Rate Test utility. Freeware.
  688. 4_SPEED.DOC     Auxiliary documentation.
  689. DBOWLDEM.EXE    Simple demo that gives a look at registered
  690.                 4_Drives v3.01 and 4_Park v1.1, and our new DiskQwik
  691.                 programs.
  692. DISKQWIK.PCX    Graphics picture file showing Data Transfer Rates with
  693.                 various command line options. Test and graphics file
  694.                 created by our new 4_Speed Data Transfer Rate Test
  695.                 utility. Freeware.
  696. ORDERDQ.FRM     Mail-in registration form
  697. READMEDQ.TXT    User shareware policy
  698. VENDORDQ.DOC    Shareware vendor's distribution policy
  699.  
  700. *****************************************************************
  701. Dustbowl Designs, Inc.          |
  702. 12600 S.E. 38th Street          |
  703. Choctaw, Oklahoma  73020-6107   |
  704. U.S.A.                          | CIS: 71062,2542
  705.  
  706. phone:
  707. (405) 741-4705 ordering, tech support, general information
  708. (405) 741-2721 BBS (9600 HST/v.everything) Tech Support, Hard disk
  709.                drive shareware, drive specs, Online Shareware
  710.                Registration/Download for VISA or MasterCard orders!
  711.  
  712.     NAME : ___________________________________Password:_________________
  713.  
  714.  ADDRESS : _____________________________________________________________
  715.  
  716.            ___________________________________________ ZIP :____________
  717.  
  718. TELEPHONE: ___________________________________________ (Day & Night)
  719.  
  720. COMMENTS : _____________________________________________________________
  721.  
  722.            _____________________________________________________________
  723.  
  724.            ___________________________________________________________
  725.  
  726.      Qty    Description                            Each       Total
  727.  
  728.      ____   DiskQwik v1.2  Registration            $25.00     ________
  729.  
  730.                                                      Subtotal ________
  731.  
  732.   (Oklahoma residents add 6.5% sales tax)                 Tax ________
  733.  
  734. U.S. diskette orders add $3 shipping & handling, Foreign diskette
  735. orders add $5 U.S. shipping. This also applies to Special Upgrade for
  736. Registered users (If you want to download from our BBS put $0.00
  737. dollars for shipping and write the password you'll be using next to
  738. your name above.  Allow 7 days for Postal transit.)
  739.                                                       Shipping ________
  740.  
  741. DATE : ______________________________
  742.                                                        TOTAL $________
  743. PAYMENT:
  744.  [ ] Visa/MasterCard  [ ] Check (number ____________)
  745.        (see below)       (make checks payable to Dustbowl Designs, Inc.)
  746.  
  747.  [ ] Cash US$         [ ] US$ Money Order (No foreign  currency)
  748.  
  749.  
  750. Total amount enclosed or authorized: $________________
  751.  
  752. _______________________________________________________________________
  753. If Payment by Visa or MasterCard:
  754.  
  755. We can only accept Visa or MasterCards (no American Express, please.)
  756. We will need the following information:
  757.  
  758. Credit card number: ______________________________________________________
  759.  
  760. Expiration date: _________________________________________________________
  761.  
  762. Bank the card's drawn on: ________________________________________________
  763.  
  764. The name as it appears on the card: ______________________________________
  765.  
  766. The signature of its owner authorizing us
  767. to debit it for the amount indicated above: ______________________________
  768.  
  769. _______________________________________________________________________
  770.  
  771.  THE FOLLOWING INFORMATION IS REQUIRED FOR REGISTRATION:
  772.  
  773.  HARD DISK  #1 MAKE ____________________MODEL_________________SIZE________
  774.  
  775.  HARD DISK  #2 MAKE ____________________MODEL_________________SIZE________
  776.  
  777.  CONTROLLER #1 MAKE_____________________MODEL_________________
  778.  
  779.  
  780.  COMPUTER   286 ( )   386 ( )  486 ( )      OTHER ( ) ______________________
  781.              SX ( )    DX ( )  DX2 ( )  OverDrive ( )
  782.  
  783.  OPERATING SYSTEM / DOS VERSION ___________________
  784.  
  785.  VIDEO CARD  Standard VGA ( )  Super VGA ( )  Coproccessed/Accelerator  ( )
  786.  
  787.  MOUSE      YES ( )  NO ( )
  788.  
  789.  JOYSTICK   YES ( )  NO ( )
  790.  
  791.  MEMORY     640 ( )  1 meg ( )   2 meg ( )   4 meg ( )  more ( ) ______
  792.  
  793.  MODEM      YES ( )  NO ( )  .... BAUD RATE ___________________________
  794.  
  795.  HOW DID YOU ACQUIRE THIS PROGRAM: bbs name &#__________________________
  796.  
  797. Fold the pages at the break below with print facing out.  Fold letter style
  798. with mailing address exposed.  Tape/staple edges, enclosing payment.
  799.  
  800.  
  801. ___________________________                                          .-----.
  802.                                                                      |Place|
  803. ___________________________                                          |Stamp|
  804.                                                                      |Here |
  805. ___________________________                                          `-----'
  806.  
  807.  
  808.  
  809.                                      Dustbowl Designs, Inc.
  810.                                      12600 S.E. 38th Street
  811.                                      Choctaw, OK    73020-6107
  812.                                      U.S.A.
  813. DiskQwik v1.1
  814.  
  815. -=EOF: DISKQWIK.DOC=-
  816.